教你如何做视频推拉流 |
您所在的位置:网站首页 › nginx 中转 › 教你如何做视频推拉流 |
一 首先了解下RTMP 实时消息传输协议,基于TCP,为Flash播放器和服务器之间做音视频数据传输的协议。由于其实时性和高品质,普遍应用于直播服务。使用这种协议做视频播放就需要安装Flash,而ios,Android等移动端并不能原生支持Flash,使得不适用于移动端。 二 如何在Linux上搭建rtmp server 下载nginx,地址http://nginx.org 下载nginx-rtmp-module,地址https://github.com/arut/nginx-rtmp-module 下载open-ssl,地址https://github.com/openssl/openssl 进入nginx主目录,设置编译配置 ./configure --prefix=/user/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module --without-http_rewrite_module --with-openssl=../openssl --without-http_gzip_module 编译安装 make && make install 配置参数 vi /user/local/nginx/conf/nginx.conf 增加, rtmp { server { listen 1935; chunk_size 4000; application live { live on; # 启动rtmp直播 record off; # 关闭录制 } } } 还可以设置权限安全,在server{}或者application{}配置块中添加推拉流限制规则 配置在server内,则对块内所有application生效 配置在application内,则只影响这一个application 示例: 允许127.0.0.1推流到服务器,但拒绝其他任何来源 allow publish 127.0.0.1; deny publish all; 允许其他任何来源拉流,但是除了127.0.0.1 allow play all; deny play 127.0.0.1; 这种配置很有用,特别是能避免其他人推流,否则数据就混乱了。 另外,还可以配置转接推到其他rtmp流 在application块,将接收到的流推到另一个地址,如果有串流秘钥,只需要将秘钥添加到推流地址后面即可,如 push rtmp://192.168.67.43:1935/live/mykey 这个功能可以用于做代理,解决某些场景下节点网络不通,需要中间节点中转的情形。 修改配置文件后,可以将原有进程杀死,然后在/user/local/nginx/sbin 目录下,执行 ./nginx -c /user/local/nginx/conf/nginx.conf 重启 验证nginx是否启动正常,可以直接在web上输入http://{server_ip},显示Welcome to nginx!则为正常。 到这里为止,rtmp server已经搭建,外部访问地址为:rtmp://{server_ip}:1935/live 三 如何推流 可以在另一台机器上,包括Windows系统,推送rtmp音视频流到rtmp server 具体地, 首先在本地windows机器上安装ffmpeg,下载安装包解压即可 以本地视频文件carfire为例,可以将一个视频文件内容循环推送到rtmp server,如: ffmpeg -stream_loop -1 -re -i carfire.mp4 -vcodec copy -acodec acc -ar 44100 -f flv rtmp://{server_ip}:1935/live 其中 i 设定输入流 f 指定输出格式,rtmp的封装格式为flv acodec 设定音频编码器,rtmp使用acc编码音频 ar 设定音频采样率,44100Hz为CD音质界线 vcodec 如果输入流使用的就是H.264视频编码,则使用copy 表示和输入流一致,否则要写为libx264,rtmp使用H.264进行视频编码 stream_loop 循环读取 -1表示无限循环 re 将输入流的读取速率降低到输入的本地帧速率,避免读取过快出现直播时跳帧 四 如何拉流播放 可以在同一台windows机器上,安装VLC播放器,页面点击媒体->打开网络串流,将rtmp的拉流地址复制进去即可 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |